package com.yonyou.cyxdms.basedata.service.vo.productinfo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ProductInfosVO implements Serializable {


    private static final long serialVersionUID = 1L;

    @Excel(name = "品牌名称")
    @JsonProperty("brandName")
    private String brandName;

    @Excel(name = "车系名称")
    @JsonProperty("seriesName")
    private String seriesName;

    @Excel(name = "车型名称")
    @JsonProperty("modelName")
    private String modelName;

    @Excel(name = "配置名称")
    @JsonProperty("packageName")
    private String packageName;

    @Excel(name = "选装名称")
    @JsonProperty("optionName")
    private String optionName;

    @Excel(name = "内饰")
    @JsonProperty("trimColor")
    private String trimColor;

    @Excel(name = "外饰")
    @JsonProperty("colorName")
    private String colorName;

    @Excel(name = "产品代码")
    @JsonProperty("productCode")
    private String productCode;

    @Excel(name = "产品名称")
    @JsonProperty("productName")
    private String productName;

    @Excel(name = "公告号")
    @JsonProperty("noticeNo")
    private String noticeNo;

    @Excel(name = "年款", dict = "6048")
    @JsonProperty("yearModel")
    private Integer yearModel;

    @Excel(name = "排量", dict = "6050")
    @JsonProperty("disPlacement")
    private Integer disPlacement;

    @Excel(name = "变速箱", dict = "6049")
    @JsonProperty("transMission")
    private Integer transMission;

    @Excel(name = "排放标准", dict = "1510")
    @JsonProperty("dischargeStandard")
    private Integer dischargeStandard;

    @Excel(name = "续航里程", dict = "6051")
    @JsonProperty("enduranceMileage")
    private Integer enduranceMileage;

    @Excel(name = "是否可订购", dict = "1004")
    @JsonProperty("orderStatus")
    private Integer orderStatus;


    @JsonProperty("isIssue")
    private Integer isIssue;

    @Excel(name = "市场指导价")
    @JsonProperty("oemDirectivePrice")
    private Double oemDirectivePrice;

    @Excel(name = "共平台车指导价")
    @JsonProperty("energyOemDirectivePrice")
    private Double energyOemDirectivePrice;

    @Excel(name = "启用标记", dict = "1004")
    @JsonProperty("isValid")
    private Integer isValid;

    @JsonDeserialize(using = JsonLocalDateTimeAllDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeAllSerializer.class)
    @Excel(name = "启用日期")
    @JsonProperty("startDate")
    private LocalDateTime startDate;

    @Excel(name = "操作人")
    @JsonProperty("updatedBy")
    private String updatedBy;

    @JsonDeserialize(using = JsonLocalDateTimeAllDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeAllSerializer.class)
    @Excel(name = "操作日期")
    @JsonProperty("updatedAt")
    private LocalDateTime updatedAt;

    /**
     * 补贴金额
     */
    @JsonProperty("subsidyAmount")
    @Excel(name = "国补标准")
    private Double subsidyAmount;


    /**
     * 产品id 主键
     */
    @ApiModelProperty(value = "产品id")
    @JsonProperty("productId")
    private String productId;

    /**
     * 产品描述
     */
    @ApiModelProperty(value = "产品描述")
    @JsonProperty("productDesc")
    private String productDesc;
    /**
     * 选装代码
     */
    @ApiModelProperty(value = "选装代码")
    @JsonProperty("optionCode")
    private String optionCode;

    /**
     * 配置代码
     */
    @ApiModelProperty(value = "配置代码")
    @JsonProperty("configCode")
    private String configCode;
    /**
     * 配置名称
     */
    @ApiModelProperty(value = "配置名称")
    @JsonProperty("configName")
    private String configName;
    /**
     * 车型代码
     */
    @ApiModelProperty(value = "车型代码")
    @JsonProperty("modelCode")
    private String modelCode;

    /**
     * 内饰颜色代码
     */
    @ApiModelProperty(value = "内饰颜色代码")
    @JsonProperty("trimColorCode")
    private String trimColorCode;
    /**
     * 内饰颜色名称
     */
    @ApiModelProperty(value = "内饰颜色名称")
    @JsonProperty("trimColorName")
    private String trimColorName;
    /**
     * 外饰颜色代码
     */
    @ApiModelProperty(value = "外饰颜色代码")
    @JsonProperty("colorCode")
    private String colorCode;


    /**
     * 产品id 主键
     */
    @ApiModelProperty(value = "产品ids")
    @JsonProperty("productIds")
    private String productIds;


    private String dealerCode;

    private String appId;


    /**
     * 数据来源
     */
    private Integer dataSources;
    /**
     * 配置_ID
     */
    private Integer packageId;
    /**
     * 颜色
     */
    private String color;


    private Integer isPurchase;

    private Integer isSales;

    private String modelYear;

    private Integer boxType;

    private String volume;

    private Integer isSend;

    private Integer productType;
    private Integer productStatus;


    /**
     * 销售指导价
     */
    private Double directivePrice;

    @JsonDeserialize(using = JsonSimpleLocalDateDeserializer.class)
    @JsonSerialize(using = JsonSimpleLocalDateSerializer.class)
    private LocalDate enterDate;

    @JsonDeserialize(using = JsonSimpleLocalDateDeserializer.class)
    @JsonSerialize(using = JsonSimpleLocalDateSerializer.class)
    private LocalDate exeuntDate;

    private String remark;
    private Integer vehicleSources;
    private Integer recordVersion;
    private String createdBy;

    @JsonDeserialize(using = JsonLocalDateTimeAllDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeAllSerializer.class)
    private LocalDateTime createdAt;


    private Integer organizationId;
    private String sourceId;

    @JsonDeserialize(using = JsonLocalDateTimeAllDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeAllSerializer.class)
    private LocalDateTime sourceChangedAt;
    private Long modelId;
    private Long brandId;
    private Long seriesId;
    private Long colorId;
    private String interiorColor;
    private Integer mtocType;
    private Long optionId;
    private Long trimColorId;
    private String trimCode;
    @Excel(name = "动力形式",dict = "6008")
    private String powerType;

    @JsonDeserialize(using = JsonLocalDateTimeQueryBeginDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeQueryBeginSerializer.class)
    private LocalDateTime sendDate;
    private String sendBy;

    /**
     * 销售单价
     */
    private Double vehiclePrice;

    /**
     * 储备高限
     */
    private Integer maxReserve;

    /**
     * 储备底限
     */
    private Integer minReserve;

    /**
     * 采购单价
     */
    private Double purchasePrice;

    /**
     * 销售底价
     */
    private Double salesBasePrice;

    /**
     * 整车加价率
     */
    private Double vehicleMarkupRate;

    /**
     * 分类名称
     */
    private String baseName;

    /**
     * 分类代码
     */
    private String baseCode;

    /**
     * 整车产品价格维护_ID
     */
    private Integer productPriceId;

    private Long baseId;

}
